FastAPI অ্যাপ্লিকেশন স্ট্রাকচার

Web Development - ফাস্টএপিআই (FastAPI) - FastAPI এর বেসিক কনফিগারেশন
241

FastAPI অ্যাপ্লিকেশনের একটি ভাল গঠিত স্ট্রাকচার ডেভেলপমেন্ট এবং মেইনটেন্যান্স সহজ করে। বড় ও জটিল প্রজেক্টের জন্য একটি মডুলার এবং স্কেলেবল ফোল্ডার স্ট্রাকচার প্রয়োজন। এখানে FastAPI অ্যাপ্লিকেশনের একটি সুপারিশকৃত স্ট্রাকচার দেওয়া হয়েছে।


স্ট্রাকচার উদাহরণ

my_fastapi_project/
├── app/
│   ├── main.py
│   ├── routes/
│   │   ├── __init__.py
│   │   ├── example_routes.py
│   ├── models/
│   │   ├── __init__.py
│   │   ├── example_models.py
│   ├── schemas/
│   │   ├── __init__.py
│   │   ├── example_schemas.py
│   ├── database.py
│   ├── __init__.py
├── tests/
│   ├── test_main.py
├── .env
├── requirements.txt
├── README.md

প্রতিটি ফোল্ডার এবং ফাইলের কাজ

app/main.py

এই ফাইলটি অ্যাপ্লিকেশনের এন্ট্রি পয়েন্ট। এটি FastAPI অবজেক্ট তৈরি করে এবং রাউট, ডাটাবেস, মিডলওয়্যার ইত্যাদি কনফিগার করে।

from fastapi import FastAPI
from app.routes import example_routes

app = FastAPI()

# রাউট অন্তর্ভুক্ত করা
app.include_router(example_routes.router)

@app.get("/")
def read_root():
    return {"message": "Welcome to FastAPI"}

app/routes/

এই ফোল্ডারে অ্যাপ্লিকেশনের এন্ডপয়েন্ট বা রাউট সংজ্ঞায়িত করা হয়। প্রতিটি মডিউলের জন্য আলাদা ফাইল ব্যবহার করা হয়।

example_routes.py

from fastapi import APIRouter

router = APIRouter()

@router.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "query": q}

app/models/

এই ফোল্ডারে ডাটাবেস মডেল সংজ্ঞায়িত করা হয়। সাধারণত SQLAlchemy বা অন্য ORM ব্যবহার করা হয়।

example_models.py

from sqlalchemy import Column, Integer, String
from app.database import Base

class ExampleModel(Base):
    __tablename__ = "examples"

    id = Column(Integer, primary_key=True, index=True)
    name = Column(String, index=True)

app/schemas/

এই ফোল্ডারে Pydantic ব্যবহার করে ডাটা যাচাইকরণ এবং ডাটা ট্রান্সফার অবজেক্ট তৈরি করা হয়।

example_schemas.py

from pydantic import BaseModel

class ExampleSchema(BaseModel):
    name: str
    description: str

    class Config:
        orm_mode = True

app/database.py

ডাটাবেসের সাথে সংযোগ স্থাপন এবং ORM সেটআপ করার জন্য ব্যবহৃত হয়।

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"

engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

tests/

এই ফোল্ডারে টেস্ট ফাইল রাখা হয়। FastAPI টেস্টিংয়ের জন্য pytest ব্যবহার করা হয়।

test_main.py

from fastapi.testclient import TestClient
from app.main import app

client = TestClient(app)

def test_read_root():
    response = client.get("/")
    assert response.status_code == 200
    assert response.json() == {"message": "Welcome to FastAPI"}

.env

এই ফাইলটি পরিবেশ সংক্রান্ত ভ্যারিয়েবল সংরক্ষণে ব্যবহৃত হয়, যেমন ডাটাবেস URL বা API কীগুলি।

DATABASE_URL=sqlite:///./test.db
SECRET_KEY=mysecretkey

requirements.txt

FastAPI প্রজেক্টে ব্যবহৃত প্যাকেজগুলোর তালিকা সংরক্ষণ করা হয়। এটি ব্যবহার করে অন্য ডেভেলপার সহজে ডিপেনডেন্সি ইনস্টল করতে পারে।

fastapi
uvicorn
sqlalchemy
pydantic
pytest
python-dotenv

README.md

প্রজেক্ট সম্পর্কে বিস্তারিত তথ্য এবং সেটআপ নির্দেশিকা।

# My FastAPI Project

This is a sample FastAPI project.

## Setup Instructions
1. Install dependencies: `pip install -r requirements.txt`
2. Run the application: `uvicorn app.main:app --reload`

স্ট্রাকচার তৈরির সুবিধা

  • পুনঃব্যবহারযোগ্যতা: প্রতিটি ফিচার বা মডিউল আলাদা ফোল্ডারে থাকায় সহজে ব্যবস্থাপনা করা যায়।
  • স্কেলেবিলিটি: বড় প্রজেক্টের জন্য স্কেল করা সহজ।
  • পরিচ্ছন্ন কোডবেস: নির্দিষ্ট ফোল্ডারে নির্দিষ্ট ফিচার রাখার ফলে কোড আরও গঠনমূলক হয়।
  • সহজ টেস্টিং: আলাদা টেস্ট ফোল্ডার রাখার ফলে সহজে টেস্টিং করা যায়।

FastAPI অ্যাপ্লিকেশন স্ট্রাকচার পরিষ্কার ও সুগঠিত রাখলে প্রজেক্ট ডেভেলপমেন্ট আরও কার্যকর এবং দীর্ঘমেয়াদে সহজ হয়। এই স্ট্রাকচার অনুসরণ করে আপনি স্কেলেবল ও মডুলার অ্যাপ তৈরি করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...